package org.rcgwt.client.ui.grid.renderer;

import org.rcgwt.client.ui.grid.internal.IntRangeList;
import org.rcgwt.client.ui.grid.internal.model.IGridModel;
import org.rcgwt.client.ui.grid.internal.model.IViewModel;
import org.rcgwt.client.ui.grid.theme.IGridTheme;

/**
 * 
 * @author Olivier Oeuillot (latest modification by $Author: $)
 * @version $Revision: $ $Date: $
 */
public interface IGridRenderContext {
	IGridModel getGridModel();

	IGridTheme getTheme();

	IViewRenderContext getViewRenderContext(IViewModel viewModel);

	Object getRenderContextAttribute(String attributeName);

	void setRenderContextAttribute(String attributeName, Object value);

	IntRangeList listAllVisibleRowModelIndexes();

	int[] getColumnModelIndexes();

	int[] getColumnRenderedIndexes();

	void setRenderedRowIndex(int startRowRenderedIndex, int rowCount);

	/*
	 * 
	 * // void fillRowState(IRow row, Element element);
	 * 
	 * Iterator<IColumn> getBodyColumnsIterator();
	 * 
	 * ICellModel setupSharedCellModel(IRowModel row, IColumnModel columnModel);
	 * 
	 * ICellModel searchCell(Element element, IRowModel row);
	 * 
	 * int getColumCount();
	 * 
	 * void changeRowStateBitMask(IRowModel row, int stateMask, boolean
	 * enableMask);
	 * 
	 * IntSet listDrawnRowModelIndexes();
	 * 
	 * IUpdateState startUpdate();
	 * 
	 * public interface IUpdateState { void setGroupUpdated(IGroupModel group);
	 * 
	 * boolean isGroupUpdated(IGroupModel group);
	 * 
	 * IGridRenderContext getRenderContext(); }
	 * 
	 * // ---- Group API ---- //
	 * 
	 * // Dans VIEW: Element getGroupElement(IGroup roup);
	 * 
	 * // ---- Row API ---- //
	 * 
	 * // Dans VIEW: Element getRowElement(IRow row);
	 * 
	 * // ---- Paging indexes -----
	 * 
	 * void setRenderedRowIndex(int start, int length);
	 * 
	 * int getStartRenderedRowIndex();
	 * 
	 * int getRenderedRowLength();
	 * 
	 * // int getRowRenderIndex(IRow row);
	 * 
	 * // int getAndUpdateRowRenderIndex(IRow row);
	 * 
	 * IColumnRenderedIndexRecorder getCellRenderedIndexRecorder();
	 * 
	 * IRowRenderedIndexRecorder getRowRenderedIndexRecorder();
	 * 
	 * IGroupRenderedIndexRecorder getGroupRenderedIndexRecorder();
	 */
}
